#ifndef __HEAD_H
#define __HEAD_H

#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<time.h>
#include<string.h>
#include<pthread.h>
#include<mysql/mysql.h>
#include<stdint.h>
#include<sys/select.h>
#include <pthread.h>
#include<signal.h>
#include<dirent.h>


#include <sys/stat.h>
#include <fcntl.h>

#include <stdbool.h>
#include <termios.h>
#include <sys/time.h>
#include <time.h>


typedef struct info{                
    int option;
    int id;
    char name[10];
    char pass[10];
}requst;                    //账号密码结构体

typedef struct {
    int id;
    int dl;
}user;                      //登录结构体

typedef struct file_dir
{
    char file_name[32];
    int file_sort;
    int file_root;
}dir;                       //传输文件信息结构体

typedef struct _list
{
    int          data;
    struct _list    *next;  
}list_t;                    //列表结构体


int domenu();
int connect_1(int sockfd_1);
int sock_init(char* str1, char* str2);
void test_1(char*,char*);
void test_2(char*,char*);

void get_file(int sockfd);
int download(int sockfd_2,int id);



user enter(int sockfd);
int log_in(int sockc,requst* p);
int upload(int sockfd_2,int id);
int sign_in(int sockc,requst* p);
int doserver(int sockc,void* buf);
int function(int sockfd_2,int id);


int info(requst* p);
int info_2(requst p);
int info_3(int sockfd_2,int id);
int mysql_delete(MYSQL** mysql,int id);
int mysql_login(MYSQL** mysql,requst* p);
int mysql_sign_in(MYSQL** mysql,requst p);
int mysql_modfiy(MYSQL** mysql,char a[16],int id);
MYSQL* mysql_op(char buf[16]);

int getmax(list_t **head);
int list_free_(list_t **head);
int list_add_(list_t **head,int data);
int list_delete_(list_t **head,int data);
int list_create_(list_t **head,int data);

void my_select(int sockfd_1);
void* fun_pthread(void* sockc);


void handler(int sig);

int file_data();
int file_root(char buff[16]);
int open_file(MYSQL** mysql);

void file_track(char*buf,int id,int op);            //记录业务操作

void look_dir(int sockfd_2,int id);
MYSQL_RES* data_num(MYSQL** mysql);
void file_dir(int sockfd_2,MYSQL_ROW row,int fnum);

char* get_time(int type);                           //获得当前时间

#endif  